1

基本操作

个人对git的了解:数据不真实,但命令是没错的。

场景(该场景是最频繁的):现在你的远程仓库(我的仓库地址是solink@so-link.org:/git/solink/solink_android.git,大家可以使用github上的开源项目的地址)有个dev分支,专门用于日常开发,现在需要将该分支clone到本地、编辑、提交。

1) 从git上clone下dev分支
命令:

//-b指定clone远程的哪个分支
git  clone -b dev  solink@so-link.org:/git/solink/solink_android.git

如果发生你没有权限clone的情况,可能需要你输入账号密码或将你的公钥添加到该仓库(前提是别人愿意将你的公钥添加到他的仓库)

2) 运行完步骤1,现在本地已经有了该dev分支,切换到本地dev分支,在该dev分支下新建自己的分支,命令:

//checkout表示检出分支:如果本地有该分支,则直接切换到该分支;如果远程有该分支,则检出到本地并切换到该分支;如果没有,则失败。
//checkout -b:表示检出;当该分支不存在的时候就在本地新建一个分支
git checkout -b Given 

3) 运行完步骤2,此时已切换到了自己的工作分支,即2中所建的分支Given,这样就可以进行自己的工作了(在eclipse中更改代码)

4) 完成自己的工作后,就可以提交到自己的工作分支Given
命令

git add the_file_or_dir_that_you_change
git commit -m "对你自己的工作的描述,比如修复了某个bug或者添加了xx功能"

5) 切换到本地dev分支,命令:

git checkout dev

6) 将dev分支与自己的工作分支合并 命令:

 git merge Given

后面的工作就是将自己做的东西提交到远程仓库dev。注意不能直接就将本地dev push上去,因为如果你直接这样会将他人提交过的成果直接覆盖(因为在你clone分支dev之后,别人也有可能对dev进行修改并提交到远程,这时你的dev就跟远程的不一样了;如果你直接推送,就会将将别人的代码覆盖,会被打死的)

7) 从远程分支fetch或者pull,建议用fetch
命令 :

git fetch origin dev:temp          //将远程的dev拉下来作为temp分支(因为别人如果push过,远程的dev就和你本地的dev不一样了)

git merge temp   //如果有冲突的话会有提示,然后解决冲突

解决完冲突后,再add,commit,然后git merge temp, 最后git push origin dev

git add the_conflict_file
git commit -m "fix the conflict between Given and  Tom"//你和Tom的代码发生的冲突,当然实际中最好还是写上发生了什么冲突
git push origin dev

8)push完了之后,你们可以将那些temp分支删掉,随意

git branch -d temp  //-d 代表删除

修改仓库地址

当git服务器变更时,如果要将代码推到远程,会发现:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
SHA256:cnucP/uvrPLl/7jFPOqDgU5yk/SADsJjHSy7XQfK/3k.
Please contact your system administrator.
Add correct host key in /home/zjw/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /home/zjw/.ssh/known_hosts:5
  remove with:
  ssh-keygen -f "/home/zjw/.ssh/known_hosts" -R git.so-link.org
ECDSA host key for git.so-link.org has changed and you have requested strict checking.
Host key verification failed.
fatal: 无法读取远程仓库。

此时就需要更改远程仓库地址:

方法一,先删除后添加:
git remote rm origin
git remote add origin [url]

方法二,修改:
git remote origin set-url [url]

windows上的git使用

  • 在windows上开发有时是极其蛋疼,不像linux一两条命令就行了。
  • windows git的安装

曾纪文
201 声望22 粉丝